文字要能開始被 LLM 所使用至少要經過三段處理流程,以「Today is happy day」
Tokenize:將一段句子分拆為由一個個 token 所組成的 token list e.g. [Today, is, happy, day],並轉成一份可以對照到 vocab list e.g. {0: Apple, 1: Banana, 2: …. 5: is, … 123: happy, … 234: Today, …},經由此對照找出 token id list e.g. [234, 5, 123, 3]。這一塊可以由基於 BPE 算法的 tiktoken 實做,他的分詞不僅僅只是以單字來分,甚至更進一步從 subword 來切分,也有完整的 vocab list。
轉 Embedding 向量:將這些 id 一一的經過 Embedding Layer 轉換為 Embedding 向量 e.g. Today → 234 → [1,2,3],而此 Embedding Layer 的特徵特徵是,他是一個有 vocab list 長與可被指定的 dimension 寬的矩陣,token id 可以在其中找到對應的 weight vector。
加入 Position 向量:而這個 Embedding 向量也不會只是一對一的關係,例如:傳 Today 就永遠是 [1,2,3] 還會包括 Token 在句子裡的位置關係。而此位置資訊會再用一個特徵為 [位置, 指定維度] 的矩陣去做加法。
上述計算過程算是準備好了黑盒子要載入的 input。而這個黑盒子就是大名鼎鼎的 Transformer,Transformer 又有以下這些節點:
Normalization
Attention Module
Dropout
TBC